package com.CST.service.ys;

import com.CST.dto.ys.NumAndYardDTO;
import com.CST.dto.ys.YsBusinessBudgetDTO;
import com.CST.entity.ys.YsAssetModifyRecords;
import com.CST.entity.ys.YsEtlAssetDetails;
import com.CST.vo.ys.YsBusinessAssetVO;
import com.CST.vo.ys.YsManageAssetVO;
import com.github.pagehelper.PageInfo;

import javax.servlet.http.HttpServletResponse;

/**
 * 资产类实现类
 *
 * @author cw
 * @since 2023-05-04
 */
public interface YsBusinessAssetService {
    /**
     * 查询资产类列表
     * @param dto 查询条件
     * @return 资产明细列表
     */
    YsBusinessAssetVO getAssetInfoList(YsBusinessBudgetDTO dto);

    /**
     * 新增
     *
     * @param ysEtlAssetDetails 固定资产明细
     * @return 是否新增成功
     */
    int insertBusinessAsset(YsEtlAssetDetails ysEtlAssetDetails);

    /**
     * 回显数据
     *
     * @param id 编号
     * @return 回显数据
     */
    YsEtlAssetDetails selectInfoByNum(Integer id);

    /**
     * 更新
     *
     * @param ysEtlAssetDetails 固定资产明细
     * @return 是否更新成功
     */
    int updateBusinessAssetByNum(YsEtlAssetDetails ysEtlAssetDetails);

    /**
     * 删除
     *
     * @param id id
     * @return 是否删除成功
     */
    Boolean deleteByNum(Long id);

    /**
     * 发布
     * @param ysBusinessBudgetDto 条件
     * @return 是否发布成功
     */
    Boolean releaseData(YsBusinessBudgetDTO ysBusinessBudgetDto);

    /**
     * 修订记录查询
     * @param ysBusinessBudgetDto 条件
     * @return 修订记录列表
     */
    PageInfo<YsAssetModifyRecords> getModifyRecordList(YsBusinessBudgetDTO ysBusinessBudgetDto);

    /**
     * 撤销
     * @param dto 传入的id是对应数据是编号
     * @return 是否撤销成功
     */
    Boolean revokeRecord(NumAndYardDTO dto);

    /**
     * 导出
     * @param response response
     * @param dto 查询条件
     */
    void exportExcelYsBusinessAsset(HttpServletResponse response, YsBusinessBudgetDTO dto);
}
